#pragma once
#ifndef __STACK_H__
#define __STACK_H__

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <stdbool.h>

//
#define INITSIZE (4)

//stack data type define
typedef struct StackDataType
{
	int left;
	int right;
}StackDataType;

//stack struct data type define
typedef struct StackData
{
	StackDataType* data;
	int capacity;
	int size;
}StackData;

//stack init
void StackInit(StackData* stack);

//stack push
void StackPush(StackData* stack, StackDataType data);

//stack pop
void StackPop(StackData* stack);

//return stack top
StackDataType StackTop(StackData* stack);

//stack destroy
void StackDestroy(StackData* stack);

//return stack is empty 
bool StackEmpty(StackData* stack);

//return stack is size
int StackSize(StackData* stack);


#endif /*__STACK_H__*/